package multiplex.dataaccess.teste;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import multiplex.dataaccess.dao.*;
import multiplex.model.*;

public class MultiplexCinemaBDDaoTeste implements IDaoTeste {
	
	public void run(){
		Calendar calendar = Calendar.getInstance();
		UsuarioDao usuarioDAO = new UsuarioDao();
		Usuario usuario = new Usuario();
		usuario.setNome("João Schröedinger");
		usuario.setCpf("123.123.123-74");
		calendar.set(1985,10,15);
		usuario.setDataNascimento(calendar);
		usuario.setEmail("joao@quantico.com.br");
		usuario.setLogin("Joao");
		usuario.setSenha("senha");
		usuario.setEndereco("Rua 0");
		usuarioDAO.save(usuario);
		System.out.println("Usuario salvo com sucesso");
		
		
		LocalizacaoDao localizacaoDAO = new LocalizacaoDao();
		Localizacao localizacao = new Localizacao();
		localizacao.setLugarMarcado(true);
		localizacao.setNome("CineBotafogo");
		localizacao.setCidade("Rio de Janeiro");
		localizacaoDAO.save(localizacao);
		System.out.println("Localizacao salva com sucesso");
		
		SalaDao salaDAO = new SalaDao();
		Sala sala = new Sala();
		sala.setLocalizacao(localizacao);
		sala.setSalaTipo(SalaTipo.STADIUM);
		sala.setTecno3D(true);
		salaDAO.save(sala);
		sala = new Sala();
		sala.setLocalizacao(localizacao);
		sala.setSalaTipo(SalaTipo.HALL);
		sala.setTecno3D(true);
		salaDAO.save(sala);
		System.out.println("Salas salvas com sucesso");
		
		
		FilmeDao filmeDAO = new FilmeDao();
		Filme filme = new Filme();
		calendar.set(2010,10,01);
		filme.setAno(calendar);
		filme.setDestaque(true);
		filme.setDistribuidora("Disney");
		calendar = Calendar.getInstance();
		calendar.set(2010,10,05);
		filme.setDuracao(calendar);
		filme.setElenco("Robert de Niro");
		filme.setIndicacaoEtaria(16);
		filme.setLocalProducao("Bósnia");
		filme.setNome("A volta dos que não foram");
		filme.setNomeOriginal("The back of the one who not went");
		filme.setTipoFilme("Drama");
		filme.setSite("www.qualquercoisa.com");
		filme.setProdutores("Zé do Caixão");
		filme.setDirecao("Samir Elias Rossi");
		filmeDAO.save(filme);
		System.out.println("Filme salvo com sucesso");
		
		SessaoDao sessaoDAO = new SessaoDao();
		Sessao sessao = new Sessao();
		calendar.set(2010,10,11);
		sessao.setDataInicio(calendar);
		sessao.setFilme(filme);
		sessao.setSala(sala);
		sessaoDAO.save(sessao);
		System.out.println("Sessao salva com sucesso");
		
		CompraMarcadaDao compraMarcadaDAO = new CompraMarcadaDao();
		CompraMarcada compraMarcada = new CompraMarcada();
		Cadeira cadeira;
		compraMarcada.setNumCartaoCredito("8765123423424345");
		compraMarcada.setPreco(12.5);
		compraMarcada.setUsuario(usuario);
		compraMarcada.setSessao(sessao);
		compraMarcada.setCadeirasCompradas(new ArrayList<Cadeira>());
		for(int i=1; i<5; i++)
			for(int j=1; j<6; j++){
				cadeira = new Cadeira();
				cadeira.setColuna(j);
				cadeira.setLinha(i);
				compraMarcada.getCadeirasCompradas().add(cadeira);
			}
		compraMarcadaDAO.save(compraMarcada);
		System.out.println("Compra Marcada e cadeiras salvas com sucesso");
		
		/*
		 * ************GETS**********************
		 */
		List<Usuario> usuarios = new ArrayList<Usuario>();
		usuarios = usuarioDAO.getAll();
		for (Usuario usuario2 : usuarios) {
			System.out.printf("ID: %d\nNome: %s\nCPF: %s\nEmail: %s\n\n",
					usuario2.getId(), usuario2.getNome(), usuario2.getCpf(), usuario2.getEmail());
			
		}
		System.out.println("***************************************");
		List<Localizacao> localizacoes = new ArrayList<Localizacao>();
		List<Sala> salas;
		List<Sessao> sessoes;
		localizacoes = localizacaoDAO.getAll();
		for (Localizacao localizacao2 : localizacoes) {
			System.out.printf("ID: %d\nNome: %s\nCidade: %s\n",
					localizacao2.getId(), localizacao2.getNome(), localizacao2.getCidade());
			salas=salaDAO.getAllFromLocalizacao(localizacao2);
			for (Sala sala2 : salas) {
				System.out.printf("\tID: %d\n\tSalaTipo: %s\n",
						sala2.getId(), sala2.getSalaTipo().getNome());
				sessoes=sessaoDAO.getAllFromSala(sala2);
				for (Sessao sessao2 : sessoes) {
					System.out.printf("\t\tID: %d\n\t\tData: %s\n",
							sessao2.getId(), sessao2.getDataInicio().toString());
				}
			}
			
		}

	}
}
